using System.Collections.Generic;
using DomainModel.Domain.Model.MessageTypeModel;
using DomainModel.Domain.Model.ServiceModel;

namespace DomainModel.Domain.Model.SubscriptionModel
{
    public interface ISubscriptionsRepository : IRepository<Subscription, SubscriptionId>
    {
        Subscription Get(MessageType messageType, Service publisher, Service subscriber);
        SubscriptionId NextSubscriptionId();
        IList<MessageType> GetMessageTypesExposedByPublisher(Service publisher);
        IList<Subscription> GetBySubscriber(Service subscriber);
        IList<Subscription> GetByPublisher(Service subscriber);
    }
}